//// demo_prog/Chapter3/lec4_format_string.c
// 格式字符串使用示例
#include <stdio.h>

int main(void)
{
    // %d输出有符号整数
    printf("这是两个int型有符号整数：%d和%d\n", 100, -200);
    // %ld输出一个long型有符号整数
    printf("这是两个long型有符号整数: %ld和%ld\n", 2147483650, -2147483650);
    // 如果我们用%d输出两个超过int型表示范围的long型数，会出现溢出的问题。
    printf("这是两个溢出的int型整数：%d和%d\n", 2147483650, -2147483650);
    // 使用%c输出一个字符
    printf("这是一个英文字母：%c，另一个英文字母：%c\n", 'a', 'b');
    // 使用%s输出字符串
    printf("让我们来输出一个字符串%s\n", "CHINA!");
    // 使用%f输出浮点数
    printf("这是一个浮点数，留意它的小数位数 %f\n", 3.123456789);
    printf("这是一个浮点数，留意它的宽度和小数位数：%20.15f\n", 3.123456789);
    printf("这是一个浮点数，留意它的宽度和小数位数：%20.15f\n", 123456789012345.0);
    // 使用%e输出浮点数
    printf("这是一个指数形式表示的浮点数：%e\n", 1234567890.0);
    printf("这是一个指数形式表示的浮点数：%20.4E\n", 1234567890.0);
    // 使用%x输出16进制数
    // 在16进制数前面，通常加上0x前缀，以表示后面是16进制数。
    printf("整数%d的16进制表示是0x%x.\n", 1234567, 1234567);
    printf("整数%d的16进制表示是0X%X.\n", 1234567, 1234567);
    // 延伸：使用%p表示一个地址
    printf("打印一个指针变量中保存的内存地址：%p.\n", main);
    return 0;
}